/**
  ******************************************************************************
  * File Name          : net-ctrl.h
  * Description        : This file contains the common defines of the Extend
  ******************************************************************************
  *
  * Copyright (c) 2019 HopeMotion Co., Ltd. 
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without 
  * modification, are permitted, provided that the following conditions are met:
  *
  * 1. Redistribution of source code must retain the above copyright notice, 
  *    this list of conditions and the following disclaimer.
  * 2. Redistributions in binary form must reproduce the above copyright notice,
  *    this list of conditions and the following disclaimer in the documentation
  *    and/or other materials provided with the distribution.
  * 3. Neither the name of HopeMotion nor the names of other 
  *    contributors to this software may be used to endorse or promote products 
  *    derived from this software without specific written permission.
  * 4. This software, including modifications and/or derivative works of this 
  *    software, must execute solely and exclusively on microcontroller or
  *    microprocessor devices manufactured by or for HopeMotion.
  * 5. Redistribution and use of this software other than as permitted under 
  *    this license is void and will automatically terminate your rights under 
  *    this license. 
  *
  * THIS SOFTWARE IS PROVIDED BY HOPEMOTION AND CONTRIBUTORS "AS IS" 
  * AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT 
  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 
  * PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY
  * RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT 
  * SHALL HOPEMOTION OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 
  * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 
  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 
  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  ******************************************************************************
  */
/* Define to prevent recursive inclusion -------------------------------------*/

#ifndef ___UART_CTRL_H__
#define ___UART_CTRL_H__

#ifdef __cplusplus
extern "C" {
#endif

/* Includes ------------------------------------------------------------------*/

/* Exported constants --------------------------------------------------------*/

/* Exported macro ------------------------------------------------------------*/

/* Exported types ------------------------------------------------------------*/
typedef struct{
    int         baudrate;                                       //baudrate
    int         databit;                                        //data bits, 5, 6, 7, 8
    int         fctl;                                           //flow control, 0: none, 1: hardware, 2: software
    int         parity;                                         //parity 0: none, 1: odd, 2: even
    int         stopbit;                                        //stop bits, 1, 2
    const int   reserved;                                       //reserved, must be zero
}PortInfo_t;

typedef PortInfo_t *pPortInfo_t;

/* Exported functions ------------------------------------------------------- */
/*
 * 打开串口，返回文件描述符
 * dev：设备文件名
*/
int uart_init(const char* dev);

/*
 * 设置串口
 * fdcom: 串口文件描述符， pportinfo： 待设置的串口信息
*/
int uart_set(int fdcom, const pPortInfo_t pportinfo);

/*
 * 关闭串口
 * fdcom：串口文件描述符
*/
void uart_deinit(int fdcom);

/*
 * 发送数据
 * fdcom：串口描述符， data：待发送数据， datalen：数据长度
 * 返回实际发送长度
*/
int uart_txd(int fdcom, const unsigned char *data, int datalen);

/*
 * 接收数据
 * fdcom：串口描述符， data：接收缓冲区, datalen.：接收长度， baudrate：波特率
 * 返回实际读入的长度
*/
int uart_rxd(int fdcom, unsigned char *data, int datalen, int baudrate);

#ifdef __cplusplus
}
#endif

#endif // ___UART_CTRL_H__

